home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU12.ARC / BASIC ON DISK 1 < prev    next >
Encoding:
Text File  |  2019-04-13  |  14.8 KB  |  166 lines

  1. ║LM8
  2. ║RM75
  3. ║PP66
  4. ║PG60
  5. ║FT3:,,╨AGE <>
  6. ║VP6
  7. ║1=94
  8. ║CN1
  9. ├OMMODORE ┬ASIC ╘OKENS
  10.  
  11. BY ╨AUL ┼. ┼CKLER
  12.  
  13. ║CN0
  14. ║AI+5
  15.  
  16. ═OST PROGRAMMERS ARE AWARE THAT BASIC PROGRAMS TYPED ON THE SCREEN OF THE ├OMMODORE 64 ARE CONVERTED BY THE BASIC INTERPRETER INTO ANOTHER FORM.  ╔NSPECTION OF MEMORY LOCATIONS WITH A MACHINE LANGUAGE MONITOR OR OF DISK BLOCKS WITH SUITABLE SOFTWARE REVEALS A NUMERICAL CODE, WHICH IS NOT TRANSFORMED BACK TO BASIC BY ┴╙├╔╔ CONVERSION.  ╫HAT ARE THESE NUMBERS?  ╫HAT DO THEY MEAN?  ╚OW CAN THEY BE USED TO SOLVE PRACTICAL PROGAMMING PROBLEMS?  ╚ERE ARE A FEW OF THE ANSWERS.
  17.  
  18. ╘HE NUMERICAL CODE GENERATED BY THE BASIC INTERPRETER IS TOKENIZED BASIC.  ┼ACH BASIC KEYWORD HAS A CORRESPONDING TOKEN.  ╘HE TOKENS ARE USED AS A FORM OF SHORTHAND TO SAVE MEMORY SPACE.  ╚ENCE, A FIVE CHARACTER WORD LIKE ╟╧╙╒┬ IS STORED AS A SINGLE BYTE, $8─.
  19.  
  20. ╘HE 76 TOKENS USED BY THE ├OMMODORE 64 ARE SHOWN IN NUMERICAL ORDER IN ╞IG. 1 WITH THEIR CORRESPONDING KEYWORDS.  ┴N ALPHABETICAL LIST OF KEYWORDS AND THEIR CORRESPONDING TOKENS IS SHOWN IN ╞IG. 2.  ╘HE KEYWORDS IN TOKEN ORDER CAN BE FOUND IN ├-64 MEMORY WITH A MACHINE LANGUAGE MONITOR BEGINNING AT LOCATION $┴09┼.
  21.  
  22. ╘HE LIST OF TOKENS WAS OBTAINED BY WRITING A DUMMY BASIC PROGRAM INCLUDING ALL OF THE BASIC COMMANDS LISTED IN THE ├-64 ╨ROGRAMMER'S ╥EFERENCE ╟UIDE, INSPECTING THE RESULTING CODE IN MEMORY WITH A MACHINE LANGUAGE MONITOR, AND DECODING WITH THE HELP OF ╥┼═ STATEMENTS.  ╘HE LIST WAS CROSSCHECKED WITH THE LISTING AT $┴09┼, AND WITH ─ISPLAY ┬ASIC AND IS BELIEVED TO BE COMPLETE.  
  23.  
  24. ╘HE KEYWORDS SHOWN IN ╞IG. 2 ARE SOMETIMES CALLED "RESERVED WORDS."  ├-64 BASIC IS VERSATILE AND FORGIVING.  ╔T IS POSSIBLE TO SPELL OUT VARIABLE NAMES TO AS MANY CHARACTERS AS DESIRED FOR CLARITY IN A BASIC PROGRAM.  ╚OWEVER, NONE OF THE ADDITIONAL ENTRIES CAN CONTAIN RESERVED WORDS.  ╥ESERVED WORDS ALSO MAY NOT BE USED AS VARIABLE NAMES.
  25.  
  26. ╥ESERVED WORDS ARE RESERVED FOR USE AS BASIC COMMANDS.  ╘HEY MAY APPEAR ELSEWHERE IN A BASIC PROGRAM ONLY INSIDE DOUBLE QUOTE MARKS OR AFTER A ╥┼═ STATEMENT.  ╧THER USES OF RESERVED WORDS USUALLY RESULT IN ERROR MESSAGES.
  27.  
  28. ╘HE LIST OF KEYWORDS PROVIDES CLUES TO SOME OF THE ODDITIES OF ├-64 BASIC.  ╞OUR OF THE KEYWORDS--╔╬╨╒╘#, ╨╥╔╬╘#, ╙╨├(, AND ╘┴┬(--INCLUDE ADDITIONAL SYMBOLS IN THE KEYWORD.  ╘HIS EXPLAINS THE SENSITIVITY OF THESE FUNCTIONS TO THE PRESENCE OF A SPACE (╔╬╨╒╘ #).  ╘HEY ARE NOT RECOGNIZED CORRECTLY WHEN A SPACE IS PRESENT.  ╙IMILARLY, ╔╬╨╒╘# VS ╔╬╨╒╘ AND ╨╥╔╬╘# VS ╨╥╔╬╘ ARE DIFFERENT.  ┼ACH HAS A SEPARATE TOKEN (AND A SEPARATE ABBREVIATION).
  29.  
  30. ├ONVERSELY, ╟╧, ╟╧╘╧, AND ╘╧ ALL HAVE SEPARATE TOKENS.  ╚ENCE, ├-64 BASIC ACCEPTS EITHER ╟╧╘╧ OR ╟╧ ╘╧, BUT NOT ╟╧ ╙╒┬ INSTEAD OF
  31. ║AI+0
  32.  
  33. ╞IG. 1.  ├-64 ┬ASIC ╘OKENS AND THE ├ORRESPONDING ╦EYWORDS.
  34.  
  35.  ╘OKEN    ╦EYWORD       ╘OKEN    ╦EYWORD       ╘OKEN    ╦EYWORD
  36. ╚EX  ─EC               ╚EX  ─EC               ╚EX  ─EC
  37. ---------------------------------------------------------------
  38. $80  128  ┼╬─          $9┴  154  ├╧╬╘         $┬3  179  < (L THAN)
  39. $81  129  ╞╧╥          $9┬  155  ╠╔╙╘         $┬4  180  ╙╟╬
  40. $82  130  ╬┼╪╘         $9├  156  ├╠╥          $┬5  181  ╔╬╘
  41. $83  131  ─┴╘┴         $9─  157  ├═─          $┬6  182  ┴┬╙ 
  42. $84  132  ╔╬╨╒╘#       $9┼  158  ╙┘╙          $┬7  183  ╒╙╥
  43. $85  133  ╔╬╨╒╘        $9╞  159  ╧╨┼╬         $┬8  184  ╞╥┼
  44. $86  134  ─╔═          $┴0  160  ├╠╧╙┼        $┬9  185  ╨╧╙
  45. $87  135  ╥┼┴─         $┴1  161  ╟┼╘          $┬┴  186  ╙╤╥
  46. $88  136  ╠┼╘          $┴2  162  ╬┼╫          $┬┬  187  ╥╬─
  47. $89  137  ╟╧╘╧         $┴3  163  ╘┴┬(         $┬├  188  ╠╧╟
  48. $8┴  138  ╥╒╬          $┴4  164  ╘╧           $┬─  189  ┼╪╨
  49. $8┬  139  ╔╞           $┴5  165  ╞╬           $┬┼  190  ├╧╙ 
  50. $8├  140  ╥┼╙╘╧╥┼      $┴6  166  ╙╨├(         $┬╞  191  ╙╔╬
  51. $8─  141  ╟╧╙╒┬        $┴7  167  ╘╚┼╬         $├0  192  ╘┴╬
  52. $8┼  142  ╥┼╘╒╥╬       $┴8  168  ╬╧╘          $├1  193  ┴╘╬
  53. $8╞  143  ╥┼═          $┴9  169  ╙╘┼╨         $├2  194  ╨┼┼╦
  54. $90  144  ╙╘╧╨         $┴┴  170  + (PLUS)     $├3  195  ╠┼╬
  55. $91  145  ╧╬           $┴┬  171  - (MINUS)    $├4  196  ╙╘╥$
  56. $92  146  ╫┴╔╘         $┴├  172  * (ASTERISK) $├5  197  ╓┴╠
  57. $93  147  ╠╧┴─         $┴─  173  / (SLASH)    $├6  198  ┴╙├
  58. $94  148  ╙┴╓┼         $┴┼  174  ^1 (UP ARROW) $├7  199  ├╚╥$
  59. $95  149  ╓┼╥╔╞┘       $┴╞  175  ┴╬─          $├8  200  ╠┼╞╘$
  60. $96  150  ─┼╞          $┬0  176  ╧╥           $├9  201  ╥╔╟╚╘$
  61. $97  151  ╨╧╦┼         $┬1  177  > (GR THAN)  $├┴  202  ═╔─$
  62. $98  152  ╨╥╔╬╘#       $┬2  178  = (EQUALS)   $├┬  203  ╟╧
  63. $99  153  ╨╥╔╬╘
  64.  
  65.                            
  66.                            
  67. ╟╧╙╒┬.  ╙╒┬ IS NOT A KEYWORD.
  68. ║AI+5
  69.  
  70. ╔T ALSO SEEMS IRONIC THAT THE SIMPLE MATH FUNCTIONS, +, -, *, /, ^, >, =, AND < ALL HAVE TOKENS.  ┼ACH OF THESE ALSO HAS A DISTINCTIVE ONE BYTE ┴╙├╔╔ REPRESENTATION.  ╚ENCE, THEY APPEAR DIFFERENTLY IN MEMORY WHEN ENTERED INSIDE QUOTATION MARKS COMPARED TO OUTSIDE QUOTE MARKS.  ╘HE BASIC TOKEN FOR "+" IS $┴┴; THE ┴╙├╔╔ VALUE IS $2┬.
  71.  
  72. ┬┴╙╔├ ╔╬ ═┼═╧╥┘.  ╫HEN VIEWED IN MEMORY WITH A MACHINE LANGUAGE MONITOR (IN HEXIDECIMAL), A BASIC PROGRAM HAS CERTAIN UNIQUE FEATURES.  ╘HE MAIN ONE IS THE LARGE NUMBER OF $00 CHARACTERS.
  73.  
  74. ┼ACH LINE OF A BASIC PROGRAM BEGINS WITH A $00, FOLLOWED BY A TWO BYTE (LO BYTE, HI BYTE) POINTER TO THE MEMORY LOCATION OF THE NEXT LINE IN THE PROGRAM, FOLLOWED BY THE BASIC LINE NUMBER IN TWO BYTE BINARY, AND FINALLY BY THE BASIC LINE.  ╔N THE BASIC LINE ONLY THE KEYWORDS APPEAR AS TOKENS.  ┴LL OTHER CHARACTERS ARE IN ┴╙├╔╔.  ╧NLY THE BASIC LINE NUMBER IS IN TWO BYTE BINARY FORM.  ┼VEN A LINE 
  75. ║AI+0
  76.  
  77. ╞IG. 2.  ├-64 ┬ASIC ╦EYWORDS AND THE ├ORRESPONDING ╘OKENS
  78.  
  79. ╦EYWORD    ╘OKEN       ╦EYWORD    ╘OKEN       ╦EYWORD    ╘OKEN
  80. »         ╚EX  ─EC               ╚EX  ─EC               ╚EX  ─EC
  81. ----------------------------------------------------------------
  82. + (PLUS)  $┴┴  170     ╟┼╘       $┴1  161     ╨╥╔╬╘#    $98  152
  83. - (MINUS) $┴┬  171     ╟╧        $├┬  203     ╥┼┴─      $87  135
  84. * (AST'K) $┴├  172     ╟╧╙╒┬     $8─  141     ╥┼═       $8╞  143
  85. / (SLASH) $┴─  173     ╟╧╘╧      $89  137     ╥┼╙╘╧╥┼   $8├  140
  86. ^1 (UP AR) $┴┼  174     ╔╞        $8┬  139     ╥┼╘╒╥╬    $8┼  142
  87. > (G TH)  $┬1  177     ╔╬╨╒╘     $85  133     ╥╔╟╚╘$    $├9  201
  88. = (EQUAL) $┬2  178     ╔╬╨╒╘#    $84  132     ╥╬─       $┬┬  187
  89. < (L TH)  $┬3  179     ╔╬╘       $┬5  181     ╥╒╬       $8┴  138
  90. ┴┬╙       $┬6  182     ╠┼╞╘$     $├8  200     ╙┴╓┼      $94  148
  91. ┴╬─       $┴╞  175     ╠┼╬       $├3  195     ╙╟╬       $┬4  180
  92. ┴╙├       $├6  198     ╠┼╘       $88  136     ╙╔╬       $┬╞  191
  93. ┴╘╬       $├1  193     ╠╔╙╘      $9┬  155     ╙╨├(      $┴6  166
  94. ├╚╥$      $├7  199     ╠╧┴─      $93  147     ╙╤╥       $┬┴  186
  95. ├╠╧╙┼     $┴0  160     ╠╧╟       $┬├  188     ╙╘┼╨      $┴9  169
  96. ├╠╥       $9├  156     ═╔─$      $├┴  202     ╙╘╧╨      $90  144
  97. ├═─       $9─  157     ╬┼╫       $┴2  162     ╙╘╥$      $├4  196
  98. ├╧╬╘      $9┴  154     ╬┼╪╘      $82  130     ╙┘╙       $9┼  158
  99. ├╧╙       $┬┼  190     ╬╧╘       $┴8  168     ╘┴┬(      $┴3  163
  100. ─┴╘┴      $83  131     ╧╬        $91  145     ╘┴╬       $├0  192
  101. ─┼╞       $96  150     ╧╨┼╬      $9╞  159     ╘╚┼╬      $┴7  167
  102. ─╔═       $86  134     ╧╥        $┬0  176     ╘╧        $┴4  164
  103. ┼╬─       $80  128     ╨┼┼╦      $├2  194     ╒╙╥       $┬7  183
  104. ┼╪╨       $┬─  189     ╨╧╦┼      $97  151     ╓┴╠       $├5  197
  105. ╞╬        $┴5  165     ╨╧╙       $┬9  185     ╓┼╥╔╞┘    $95  149
  106. ╞╧╥       $81  129     ╨╥╔╬╘     $99  153     ╫┴╔╘      $92  146
  107. ╞╥┼       $┬8  184
  108.  
  109.  
  110.  
  111. NUMBER REFERENCE SUCH AS IN 100 ╟╧╘╧ 100 APPEARS IN ┴╙├╔╔ ($64 $00 $89 $20 $31 $30 $30).
  112. ║AI+5
  113.  
  114. ╘HE END OF A BASIC PROGRAM IN MEMORY IS INDICATED BY $00 $00 $00.  ╨UT ANOTHER WAY, IN THE LAST LINE IN MEMORY THE MEMORY LINE POINTER IS SET TO ZERO.
  115.  
  116. ┬┴╙╔├ ╨╥╧╟╥┴═╙ ╧╬ ─╔╙╦.  ╧N DISK, BASIC PROGRAMS APPEAR EXACTLY AS THEY DO IN MEMORY--EXCEPT THAT THE ─╧╙ DISK STORAGE POINTERS ARE ADDED.  ╘HEREFORE, AS WITH ALL OTHER PROGRAM FILES ON DISK, THE NAME OF THE PROGRAM IS STORED IN THE DIRECTORY BLOCKS IN TRACK 18.
  117.  
  118. ╘HE DIRECTORY ENTRY INCLUDES A POINTER TO THE TRACK AND SECTOR NUMBER OF THE FIRST BLOCK OF THE PROGRAM.  ╘HIS BLOCK POINTER IS NOT DISPLAYED WHEN VIEWING THE DIRECTORY USING ╠╧┴─"$",8:╠╔╙╘.  ╚OWEVER, SEVERAL COMMERCIAL PROGRAMS (INCLUDING ╘HE ├LONE ═ACHINE) DO DISPLAY THE POINTERS, OR THEY CAN BE VIEWED USING ─ISPLAY ╘&╙ (ON THE ╓╔├ 1541 ─EMONSTRATION ─ISK).
  119.  
  120. ╘HE PROGRAM IS STORED SEQUENTIALLY ON A SERIES OF BLOCKS.  ╘HE BLOCKS EACH CONSIST OF 256 BYTES.  ╘HE FIRST TWO BYTES ARE THE BLOCK POINTER, IE, THE TRACK AND SECTOR NUMBER RESPECTIVELY OF THE NEXT BLOCK.  ╔N THE LAST BLOCK OF THE PROGRAM, THE FIRST BYTE IS $00, AND THE SECOND BYTE CONTAINS THE NUMBER OF BYTES IN USE ON THE CURRENT BLOCK.  ┴GAIN, AS WITH BASIC IN MEMORY, THE LAST POINTER IS SET TO ZERO.
  121.  
  122. ╘HEREFORE, ON DISK A BASIC PROGRAM IS RECORDED SEQUENTIALLY AND IN THE SAME FORMAT FOUND IN MEMORY.  ╚OWEVER, THE FIRST PROGRAM BYTE ON EACH DISK BLOCK IS THE THIRD BYTE (BYTE 02).
  123.  
  124. ╘HE FIRST BLOCK OF A BASIC PROGRAM DIFFERS SLIGHTLY FROM ALL THE OTHERS.  ┴S WITH ALL DISK PROGRAMS, THE MEMORY LOAD ADDRESS IS STORED IN BYTES 02 AND 03 (LO BYTE, HI BYTE).  ╞OR A BASIC PROGRAM THIS ADDRESS IS $0801.  ╘HESE TWO BYTES REPLACE THE $00 FOUND AT THE BEGINNING OF ALL OTHER BASIC LINES ON DISK.  ╫HEN THE PROGRAM IS LOADED INTO MEMORY THE FIRST LINE $00 IS PRESENT AT ADDRESS $0800.  ╘HE PRESENCE OF $01 AND $08 IN BYTES 02 AND 03 OF A DISK BLOCK APPEARS TO BE A GOOD PRELIMINARY INDICATOR OF THE FIRST BLOCK OF A BASIC PROGRAM.
  125.  
  126. ├AN A BASIC PROGRAM WRITTEN ON A ╓╔├ 20 AND SAVED TO DISK, BE RUN ON A ├-64?  ┴SSUMING THAT NO ╨┼┼╦S OR ╨╧╦┼S ARE USED, PROBABLY.  ╘HE TOKENS LISTED ON P. 121 OF THE ╓╔├-20 ╨ROGRAMMER'S ╥EFERENCE ╟UIDE APPEAR TO BE IDENTICAL TO THOSE OF THE ├-64, EXCEPT THAT ╟╧ IS NOT A ╓╔├-20 KEYWORD.  ╘HEREFORE, ONLY THE LOAD ADDRESS ON THE FIRST PROGRAM BLOCK SHOULD NEED TO BE CHANGED.  ╞OR THE ╓╔├ THE START OF BASIC ADDRESS IS 4096 OR $1000.  ╘HUS, BYTE 03 OF THE FIRST PROGRAM BLOCK SHOULD BE CHANGED FROM $10 OF A ╓╔├ 20 PROGRAM TO $08 TO RUN ON A ├-64.
  127.  
  128. ┴CCORDING TO THE ╓╔├ MANUAL, THE $00'S FOUND IN MEMORY WITH BASIC PROGRAMS DESIGNATE THE END OF A BASIC LINE RATHER THAN THE BEGINNING.  ╘HEREFORE, THE $00 FOUND AT $0800 WITH THE ├-64 IS SUPERFLUOUS, AND BASIC ACTUALLY BEGINS AT $0801.
  129.  
  130.  
  131. ╥┼├╧╓┼╥╔╬╟ ┴ ╨╥╧╟╥┴═ ╞╥╧═ ┴ ┬┴─ ─╔╙╦.  ╔TS WELL KNOWN THAT DISKS CAN GO BAD, AND THAT PROGRAMS STORED ON DISK CAN BECOME UNUSABLE.  ╞OR THESE REASONS, BACKUP COPIES OF DISKS ARE USUALLY RECOMMENDED.  ╬O MATTER HOW DILIGENT THE BACKUP EFFORT, OCCASIONALLY IT MAY BE NECESSARY TO RECOVER A PROGRAM FROM A BAD DISK.  ╧FTEN A BAD DISK IS ACTUALLY DUE TO AN OUT OF ALIGNMENT DISK DRIVE, SO THE NEED FOR DIRECT RECOVERY MAY BE RARE.  ╘HE COMMENTS HERE RELATE TO THE SITUATION WHEN ONE OF THE BLOCKS IN A BASIC PROGRAM SEQUENCE CONTAINS A DISK ERROR.
  132.  
  133. ╘HE FIRST STEP IN THIS SITUATION IS TO MAKE A BACKUP COPY OF THE DISK.  ╒SE A PROGRAM WHICH MAKES A COPY FROM THE ┬┴═ RATHER THAN A DIRECT COPY.  ┬OTH 1541 ┬ACKUP AND ┬ACKUP 228 HAVE THIS OPTION.  ┬ACKUP 228 MAY BE PREFERRED SINCE IT WILL NOT CRASH AT THE ERROR BLOCK.  ┴ ┬┴═ DUPLICATE IS ESSENTIAL SINCE A DIRECT COPY MAY INCLUDE MANY SCRATCHED BLOCKS CONTAINING PARTS OF PREVIOUS EDITIONS OF YOUR PROGRAMS.  ╘HESE DEAD PROGRAM BLOCKS CAN CONFOUND RECOVERY EFFORTS.
  134.  
  135. ═OST OF THE PROGRAMS SHOULD BE USABLE ON YOUR DUPLICATE DISK, AND SHOULD REQUIRE NO FURTHER EFFORT.  ╚OWEVER, FOR THE BAD PROGRAM THE NEXT STEP IS TO IDENTIFY ALL OF THE BLOCKS OF THE PROGRAM.  ╞INDING THE FIRST HALF OF THE PROGRAM IS NOT DIFFICULT, SINCE THE DIRECTORY POINTERS WILL IDENTIFY THE FIRST BLOCK.  ─ISPLAY ╘&╙ WILL THEN LET YOU FOLLOW THE CHAIN OF BLOCKS UNTIL YOU REACH THE ERROR BLOCK.
  136.  
  137. ╔TS POSSIBLE THAT THE ERROR BLOCK WILL BE AT OR NEAR THE END OF THE PROGRAM.  ╔N THIS CASE, SIMPLY CHANGE THE FIRST AND SECOND BYTES ON THE LAST REMAINING BLOCK TO $00 $╞╞.  ╙EVERAL COMMERCIAL PROGRAMS ALLOW DIRECT MODIFICATION OF BLOCKS ON DISK.  ╧NE OF THESE IS ╘HE ├LONE ═ACHINE.
  138.  
  139. ╧NCE THE CHANGE IS MADE, LOAD YOUR PROGRAM AS NORMAL.  ╒SE A MACHINE LANGUAGE MONITOR IF NEEDED TO ADD THE THREE FINAL $00'S TO THE PROGRAM IN MEMORY.  ┘OU SHOULD NOW HAVE A PROGRAM WHICH CAN BE SAVED TO DISK.  ╘HE PROGRAM MAY REQUIRE ONLY A FEW ADDITIONAL LINES TO MAKE IT RUNABLE.  ╘HESE CAN BE ADDED BY NORMAL EDITING PROCEDURES.
  140.  
  141. ╔F THE ERROR BLOCK OCCURS EARLY IN THE PROGRAM CHAIN, THE MOST CHALLENGING PROBLEM MAY BE TO FIND THE BLOCK IMMEDIATELY FOLLOWING THE ERROR BLOCK.  ╒SUALLY THIS CAN BE DONE BY INSPECTING THE ┬┴═ WITH A PROGRAM SUCH AS ╓╔┼╫ ┬┴═ ON THE 1541 ─EMONSTRATION ─ISK, AND THEN ACCOUNTING FOR EACH OF THE BLOCKS SHOWN AS BEING OCCUPIED.
  142.  
  143. ╘HE UNACCOUNTED FOR BLOCKS PROBABLY BELONG TO YOUR DAMAGED PROGRAM.  ╔NSPECT THEM ONE AT A TIME TO FIND THE FIRST ONE AFTER THE BAD BLOCK.  ─ISPLAY ╘&╙ AND KNOWLEDGE OF BASIC TOKENS SHOULD MAKE IT POSSIBLE TO IDENTIFY A BLOCK BELONGING TO THE BAD PROGRAM.  ╧F COURSE IF SEVERAL PROGRAMS ON THE DISK HAVE BEEN DAMAGED, IT WILL BE NECESSARY TO INSPECT THE BLOCKS CAREFULLY TO DETERMINE WHICH GOES WITH WHICH PROGRAM.
  144.  
  145. ╘HE SECOND HALF OF THE PROGRAM CHAIN CAN BE REASONABLY EASY TO FIND--IF YOU ARE LUCKY.  ╬ORMALLY, THE ─╧╙ ALLOCATES BLOCKS IN A SYSTEMATIC MANNER.  ╘RACKS TEND TO BE ALLOCATED IN NUMERICAL ORDER OUTWARD FROM TRACK 18.  ╘HEREFORE, THE FIRST PROGRAMS IN THE DISK DIRECTORY USUALLY BEGIN ON EITHER TRACK 17 OR 19.
  146.  
  147. ╙ECTORS ARE ALSO ALLOCATED IN A SYSTEMATIC FASHION--THOUGH NOT IN NUMERICAL ORDER.  ╘HEREFORE, IF YOU FOLLOW THE SEQUENCE OF BLOCKS IN ANOTHER PROGRAM ON THE DISK, YOU CAN PROBABLY GUESS THE NEXT BLOCKS IN YOUR PROGRAM.  ├HECK THEM OUT TO BE SURE.
  148.  
  149. ╧NCE YOU HAVE IDENTIFIED THE BLOCK AFTER THE ERROR, YOU MAY DECIDE TO WORK ONLY WITH THE LAST HALF OF THE PROGRAM AND SKIP THE FIRST FEW BLOCKS.  ╘HE SECOND HALF CAN BE LOADED BY CHANGING THE DIRECTORY POINTERS TO INDICATE THE BLOCK AFTER THE ERROR.  ╔T IS ALSO POSSIBLE TO CREATE A DUMMY DIRECTORY LISTING (BY SAVING A ONE BLOCK PROGRAM), AND CHANGE ITS BLOCK POINTERS.  ╔N EITHER CASE THE SECOND HALF OF THE PROGRAM SHOULD BE SUITABLE FOR LOADING INTO MEMORY.  ╘HE ADDITION OF THE LOAD ADDRESS (BYTES 02 03), A DUMMY MEMORY POINTER (BYTES 04 05), AND A DUMMY BASIC LINE NUMBER (BYTES 06 07) MAY BE NECESSARY.
  150.  
  151. ┴CCORDING TO ╩IM ┬UTTERFIELD (├OMPUTE, ╧CTOBER, 1983, P. 146), THE MEMORY POINTERS ARE CORRECTED DURING A LOAD.  ╘HEREFORE, ANY NON-ZERO ENTRY SHOULD BE SUITABLE.  ═R. ┬UTTERFIELD RECOMMENDS $01, $01.  ╘HE FIRST BASIC LINE NUMBER SHOULD ALSO BE A LOW VALUE SUCH AS $01 $00.
  152.  
  153. ╘HEREFORE, THE FIRST EIGHT BYTES OF THE NEW FIRST BLOCK SHOULD BE AS FOLLOWS:
  154.  
  155. ╪╪ ╪╪ $01 $08 $01 $01 $01 $00
  156. ║AI+0
  157.  
  158. IN WHICH THE ╪╪'S REPRESENT BYTES ON THE BLOCK WHICH ARE NOT CHANGED.
  159. ║AI+5
  160.  
  161. ╧NCE THE PROGRAM SEGMENT IS LOADED, IT SHOULD BE LISTABLE.  ┘OU MAY THEN BEGIN YOUR PROGRAM RECONSTRUCTION USING THE ├-64 PROGRAM EDIT FEATURES.
  162.  
  163. ╔F THE ERROR BLOCK OCCURS MIDWAY THROUGH THE PROGRAM, IT MIGHT BE POSSIBLE TO SPLICE THE TWO PROGRAM SEGMENTS TOGETHER.  ╧N DISK THIS IS DONE BY CHANGING THE BLOCK POINTERS IN THE BEFORE BLOCK TO POINT TO THE AFTER BLOCK.  ╘O MAKE THE PROGRAM RUNABLE, SOME EDITING MAY BE NEEDED AT THE SPLICE POINT BETWEEN THE TWO PROGRAM SEGMENTS.  ┴ MACHINE LANGUAGE MONITOR CAN BE USED IF NEEDED.
  164.  
  165. ║NX:TOKENSI
  166.